home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0073 / bsp1.pas < prev    next >
Pascal/Delphi Source File  |  1991-01-19  |  4KB  |  104 lines

  1. PROGRAM Beispiel_1;     (* Einlesen der Sprites zur Laufzeit *)
  2.                         (* zur Laufzeit des Programms.       *)
  3.  
  4. uses crt,dos,graph;
  5.  
  6. VAR gd,gm,x,y,i : integer;
  7.     s1,s2,s3,s4 : word;        (* Größe der Sprites *)
  8.     p1,p2,p3,p4 : pointer;     (* Pointer-Variablen für die Sprites *)
  9.  
  10. CONST pos1 : Array [1..4] of pointtype =
  11.              ((x:20; y:237),(x:40; y:237),(x:40; y:180),(x:20; y:185));
  12.              (* Die Koordinaten des "Tors" *)
  13.  
  14. PROCEDURE Load;
  15. VAR f : file;
  16. BEGIN
  17.   assign (f,'bild1.SPR');  (* Dateiname zuweisen                      *)
  18.   reset (f,1);             (* Datei öffnen                            *)
  19.   s1 := filesize (f);      (* Dateigröße feststellen                  *)
  20.   getmem (p1,s1);          (* entsprechend Speicher reservieren       *)
  21.   blockread (f,p1^,s1);    (* Sprite in die Pointer-Variable einlesen *)
  22.   close (f);               (* Datei wieder schließen                  *)
  23.                            (* Achtung: Hier ist keine Fehlerabfang-   *)
  24.                            (*          Routine eingebaut.             *)
  25.  
  26.   assign (f,'bild2.SPR');  (* Das gleiche noch dreimal...             *)
  27.   reset (f,1);
  28.   s2 := filesize (f);
  29.   getmem (p2,s2);
  30.   blockread (f,p2^,s2);
  31.   close (f);
  32.   assign (f,'bild3.SPR');
  33.   reset (f,1);
  34.   s3 := filesize (f);
  35.   getmem (p3,s3);
  36.   blockread (f,p3^,s3);
  37.   close (f);
  38.   assign (f,'ball.SPR');
  39.   reset (f,1);
  40.   s4 := filesize (f);
  41.   getmem (p4,s4);
  42.   blockread (f,p4^,s4);
  43.   close (f);
  44. END;
  45.  
  46. BEGIN
  47.   gd := detect;
  48.   initgraph (gd,gm,getenv('bgipfad'));
  49.   (* statt gentenv... muß hier der Pfad zu dem Verzeichnis stehen, in dem   *)
  50.   (* sich Ihre BGI-Dateien befinden. Oder Sie lösen das so wie ich;         *)
  51.   (* ich habe den Pfad zu meinen BGI- und CHR-Dateien in einer Environment- *)
  52.   (* Variablen mit Namen BGIPFAD gesetzt (das bedeutet: in die Autoexec.bat *)
  53.   (* Datei kommt der Befehl "set bgipfad=C:\PASCAL\BGI", wobei natürlich    *)
  54.   (* das richtige Verzeichnis angegeben werden muß). Diese Variable kann    *)
  55.   (* man dann bequem mit Getenv('bgipfad') im Programm abfragen.            *)
  56.   (* Dies geht allerdings erst ab Turbo Pascal 5.0...                       *)
  57.   clearviewport;
  58.   Load;                           (* Sprites laden *)
  59.   line (0,237,getmaxx,237);       (* ein bißchen Verzierung... *)
  60.   setfillstyle (8,white);
  61.   fillpoly (4,pos1);
  62.   settextjustify (centertext,centertext);
  63.   outtextxy (getmaxx div 2,50,'Beispiel 1 : Sprites zur Laufzeit laden');
  64.   x := 600; y := 200;
  65.   putimage (260,228,p4^,xorput);  (* Ball ausgeben *)
  66.  
  67.   For i := 1 to 21 do             (* Der Spieler nimmt Anlauf... *)
  68.   BEGIN
  69.     putimage (x,y,p1^,xorput);    (* erst Bild ausgeben... *)
  70.     delay (100-2*i);              (* warten...             *)
  71.     putimage (x,y,p1^,xorput);    (* und wieder löschen.   *)
  72.     dec (x,4);
  73.     putimage (x,y,p2^,xorput);    (* und jetzt dasselbe nochmal *)
  74.     delay (100-2*i);
  75.     putimage (x,y,p2^,xorput);
  76.     dec (x,4);
  77.     putimage (x,y,p1^,xorput);
  78.     delay (100-2*i);
  79.     putimage (x,y,p1^,xorput);
  80.     dec (x,4);
  81.     putimage (x,y,p3^,xorput);
  82.     delay (100-2*i);
  83.     putimage (x,y,p3^,xorput);
  84.     dec (x,4);
  85.   END;
  86.   putimage (x,y,p3^,xorput);
  87.   y := 228;
  88.   putimage (260,228,p4^,xorput);    (* Ball löschen *)
  89.   While x > 30 do
  90.   BEGIN
  91.     putimage (x,y,p4^,xorput);      (* und jetzt bewegen *)
  92.     delay ((300 - x) div 4);
  93.     putimage (x,y,p4^,xorput);
  94.     dec(x,4);
  95.   END;
  96.   outtextxy (getmaxx div 2,280,'Bitte Taste drücken...');
  97.   Repeat Until keypressed;
  98.   freemem (p1,s1); freemem (p2,s2);  (* Speicher wieder freigeben, *)
  99.   freemem (p3,s3); freemem (p4,s4);  (* nur der Vollständigkeit    *)
  100.   closegraph;                        (* halber . . .               *)
  101. END.
  102.  
  103.  
  104.